package Modelo;

import Controlador.FrenoDeManoDestino;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import java.util.Vector;

public class Destino extends Figuras{

	private static final long serialVersionUID = 9L;
        public boolean libre=true;
        protected FrenoDeManoDestino freno;
        Vector<Figuras> fig;
        Escenario escenario;
	public Destino(Integer id0, Integer x0,Integer y0,Integer w0,Integer h0,Color c,Integer vida, Boolean estado){

	     super(id0, x0,y0,h0,w0,c,vida,estado);
                //escenario = es;
                //fig=escenario.getFigura();
               
	}

        @Override
        public void dibujar(Graphics grafico) {

            grafico.setColor(color);
            grafico.fillRect(x, y, ancho, alto);
	}

	@Override
	public void colision(Figuras figura) {

		 figura.colision(this);
	}

        @Override
        public synchronized void colision(Autito movil) {
                    freno = new FrenoDeManoDestino();
            
                    //espera activa sólo para ver como está funcando
                    while(libre&&movil.carga){
                            movil.getCarga();
                            movil.setPunto();
                            libre=false;
                            freno.setAuto(movil);
                            freno.setDestino(this);
                            freno.start();
 	                    break;
 	                }
 	                while(!libre||!movil.carga){
                            System.out.println("otro auto quiso entrar");
                            movil.rebota();
                        break;
 	                }
                    
         }

        @Override
        public void colision(Pared pared) {
            throw new UnsupportedOperationException("Not supported yet.");
    }

        @Override
        public void colision(Base base) {
            throw new UnsupportedOperationException("Not supported yet.");
    }

        @Override
        public void colision(Destino destino) {
            throw new UnsupportedOperationException("Not supported yet.");
    }
    
        @Override
        public void colision(Policia policia) {
            Integer x0=policia.x; //guardo posiciones actuales
            Integer y0=policia.y;

            policia.x-=(policia.x-policia.xAnterior);
            policia.y-=(policia.y-policia.yAnterior);

            policia.xAnterior=x0; //posiciones antes del choque
            policia.yAnterior=y0;

            //Ahora necesito que cambien de sentido aleatoriamente
            Random rnd = new Random();

            int signo = (int)(rnd.nextDouble() * 10.0);

            while(signo<5){    //forma barata de no tener if. sugerencias?
                signo=-1;
                break;
            }
            while(signo>=5){
                signo=1;
                break;
            }

            policia.dx = policia.dx*(signo);
            policia.dy = policia.dy*(signo)*(-1);
    }

    @Override
    public void colision(Semaforo semaforo) {
        throw new UnsupportedOperationException("Not supported yet.");
    }





}
